package com.ruoyi.srmcontract.mapper;

import java.util.Date;
import java.util.HashMap;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.ruoyi.srmcontract.domain.JacContractItem;
import com.ruoyi.srmcontract.domain.JacContractItemImp;
import com.ruoyi.srmcontract.domain.JacContractPrice;
import com.ruoyi.srmcontract.domain.JacContractPriceList;

/**
 * 合同物料明细Mapper接口
 * 
 * @author ygx
 * @date 2020-08-06
 */
public interface JacContractItemMapper 
{
    /**
     * 查询合同物料明细
     * 
     * @param companycode 合同物料明细ID
     * @return 合同物料明细
     */
    public JacContractItem selectJacContractItemById(String companycode);
    
    /**
     * 检查合同中物料是否重复
     * 
     * @param companycode 合同编号  itemcode 物料编号
     * @return 是否存在物料  false:大于0 true:0
     */
    public Long  checkitem(String itemcode,String contractcode);

    /**
     * 查询合同物料明细列表
     * 
     * @param jacContractItem 合同物料明细
     * @return 合同物料明细集合
     */
    public List<JacContractItem> selectJacContractItemList(JacContractItem jacContractItem);
    
    /**
     * 通过物料编码查询物料名称
     * 
     * @param jacContractItem 合同物料明细
     * @return 合同物料明细集合
     */
    public String selectItemName(String itemcode);
    
    /**
     * 发布前检查是否包含物料
     * @param contractcode
     * @return 不包含返回false
     */
    public boolean checkItemExists(String contractcode);
    
    /**
     * 查询需要导出到Excel的合同物料明细列表
     * 
     * @param jacContractItem 合同物料明细
     * @return 合同物料明细集合
     */
    public List<JacContractItem> selectExcelList(JacContractItem jacContractItem);
    
    /**
     * 新增合同物料明细
     * 
     * @param jacContractItem 合同物料明细
     * @return 结果
     */
    public int insertJacContractItem(JacContractItem jacContractItem);
   
    
    /**
     * 新增合同物料明细(excel导入)
     * 
     * @param jacContractItem 合同物料明细
     * @return 结果
     */
    public int insertJacContractItem(JacContractItemImp jacContractItemImp);
    
    
    /**
     * 修改合同物料明细
     * 
     * @param jacContractItem 合同物料明细
     * @return 结果
     */
    public int updateJacContractItem(JacContractItem jacContractItem);

    /**
     * 删除合同物料明细
     * 
     * @param companyid 合同物料明细ID
     * @return 结果
     */
    public int deleteJacContractItemById(Long itemid);
    

    /**
     * 批量删除合同物料明细
     * 
     * @param companycodes 需要删除的数据ID
     * @return 结果
     */
    public int deleteJacContractItemByIds(String[] companycodes);
    
    /**
     * 根据endid获取最新添加的合同价格
     * @param
     * @return
     */
    public List<JacContractPrice> selectNewPrice();
    
    /**
     * 判断某年度某事业部的某供应商的某物料是否存于在价格走势表
     * @param contractyear
     * @param vendorcode
     * @param companycode
     * @return
     */
    public boolean checkPriceExists(JacContractPrice jacContractPrice);
    
    /**
     * 获取某年度某个月某事业部的某供应商的某物料最后的生效日期
     * @param jacContractPrice
     * @return
     */
    public Date selectMonthValid (JacContractPrice jacContractPrice);
    
    /**
     * 将物料数据插入价格走势表
     * @param JacContractPricem
     * @return
     */
    public int insertContractPrice(JacContractPrice jacContractPrice);
    
    /**
     * 更新价格走势表
     * @param jacContractPrice
     * @return
     */
    public int updateContractPrice(JacContractPrice jacContractPrice);
    
    
    /**
     * 根据物料价格生效时间和合同结束时间，更新全部月份的价格走势表
     * @param jacContractPrice
     * @return
     */
    public int updateContractPriceAll(JacContractPrice jacContractPrice);
    
    /**
     * 将调度任务结果插入价格走势表调度任务表
     * @param JacContractPrice
     * @return
     */
    public int insertContractPriceCron(JacContractPrice jacContractPrice);
    
    /**
     * 获取价格走势最后一次的endid（合同明细id）
     * @return
     */
    public int selectEndId();
    
    /**
     * 获取合同明细最大id
     * @return
     */
    public int selectMaxId();
    
    
    /**
     * 查询价格趋势表
     * @param jacContractPriceList
     * @return
     */
    public List<JacContractPriceList> selectContractPriceList(JacContractPriceList jacContractPriceList);
    
    /**
     * 查询某个价格趋势
     * @param jacContractPriceList
     * @return
     */
    public JacContractPriceList selectContractPrice(JacContractPrice jacContractPrice);
    
    /**
     * 查询上年未税价格	
     * @param jacContractPriceList
     * @return
     */
    public String  selectLastYearPrice(JacContractPrice jacContractPrice);
    
    /**
     * 更新价格走势表上年未税价格
     * @param jacContractPriceList
     * @return
     */
    public int updateLastYearPrice(JacContractPrice jacContractPrice);
    
    
    /**
     * 更新价格走势表本年未税价格
     * @param jacContractPriceList
     * @return
     */
    public int updateUntaxPrice(@Param("untaxprice") String untaxprice, @Param("id") String id);
    
    /**
     * 插入新增的价格趋势数据
     * @return
     */
    public int insertPrice();
    
}
